package com.polaris.live.resp.back_resp

import android.os.Parcelable
import androidx.room.Ignore
import com.polaris.live.common.util.JsonUtils
import kotlinx.parcelize.IgnoredOnParcel

/**
 * GiftsResp
 *
 * @author Created by 半仙 on 2023/9/14/014 19:21
 */
@kotlinx.parcelize.Parcelize
data class GiftsRespItem(
    /**
     * 礼物
     */
    val gifts: List<GiftBean>,
    /**
     * 展示位置 1直播 2通话 3私聊 4通话快捷男 5女
     */
    val showType: Int,
    /**
     * 来源 送礼物时使用
     */
    val sourceType: Int,
) : Parcelable

@kotlinx.parcelize.Parcelize
data class GiftBean(
    /**
     * id
     */
    val id: Long,

    /**
     * 礼物名称
     */
    val giftName: String,

    /**
     * 礼物类型 (1普通礼物 2幸运礼物 4关注礼物 8免费礼物 16 游戏币礼物 32 背包幸运礼物)
     * @see GiftType
     */
    val type: Int,

    /**
     * 礼物价格
     */
    val coin: Long,

    /**
     * 礼物图标
     */
    val pic: String,

    /**
     * 动效
     */
    val animation: String?,

    /**
     * 飘屏图
     */
    val floatPic: String?,

    /**
     *是否连送 1 是  0 否
     * @see Status
     */
    val continuous: Int,
    /**
    //     * 动效类型 0 通用动效 1 pag动效（使用animation）
    //     */
    val animationType: Int,

    /**
     * 展示banner
     */
    val banner: List<GiftBannerVo>,
    /**
     * 来源类型
     */
    val sourceType: Int,

    /**
     * 客户端透传回服务端字段 根据活动类型不同有不同的数据
     */
    val payload: String? = null,
    /**
     * 连送数据 默认[1,7,21,51,101]
     */
    val continuousData: List<Int>? = null,

    /**
     * 高宽比
     */
    val heightWidthRatio: Double? = null,

    /**
     * 音效
     */
    val soundEffect: String? = null,
) : Parcelable{

    @IgnoredOnParcel
    @delegate:Ignore
    val payloadBean: GiftPrivilegePayloadBean? by lazy {
        if (payload.isNullOrEmpty()) {
            GiftPrivilegePayloadBean()
        } else {
            JsonUtils.fromJson<GiftPrivilegePayloadBean>(payload)
        }
    }
}


/**
 * banner基础信息
 */
@kotlinx.parcelize.Parcelize
data class GiftBannerVo(
    /**
     * 头像框
     */
    val avatarFrame: String? = null,

    /**
     * banner
     */
    val banner: String,

    /**
     * 信息
     */
    val content: String,

    /**
     * 礼物图标
     */
    val giftPic: String,

    /**
     * 昵称
     */
    val nickname: String? = null,

    /**
     * 跳转路由
     */
    val router: String? = null,

    /**
     * 礼物banner类型
     */
    val type: Int,

    /**
     * 用户id
     */
    val userId: Long? = null,

    /**
     * 头像
     */
    val avatar: String? = null,
) : Parcelable
/**
 * 礼物payload
 */
data class GiftPrivilegePayloadBean(
    /**
     * 业务类型
     */
    val type: Int? = null,

    /**
     * 业务id
     */
    val businessId: Int? = null,

    /**
     * 框
     */
    val frame: String? = null,
)